/**
 * Description:角色管理<br/>
 * CreateTime:2019-03-27<br/>
 * Creater: yangpengfei360@126.com <br/>
 */
//定义常量
var privResult = "";

var setting = {
	    data:{//表示tree的数据格式
	        simpleData:{
	            enable:true,//表示使用简单数据模式
	            idKey:"id",//设置之后id为在简单数据模式中的父子节点关联的桥梁
	            pidKey:"pId",//设置之后pid为在简单数据模式中的父子节点关联的桥梁和id互相对应
	            rootId:"null"//pid为null的表示根节点
	        }
	    },
	    view: {
	        selectedMulti: true, //设置是否能够同时选中多个节点
	        showIcon: true,  //设置是否显示节点图标
	        showLine: false,  //设置是否显示节点与节点之间的连线
	        showTitle: true  //设置是否显示节点的title提示信息
	       },
	    check:{//表示tree的节点在点击时的相关设置
	        enable:true,//是否显示radio/checkbox
	        chkStyle:"checkbox",//值为checkbox或者radio表示
	        checkboxType:{ "Y": "", "N": "" },//表示父子节点的联动效果
	        radioType:"level"//设置tree的分组
	    },
	    callback:{//表示tree的一些事件处理函数
	    	onClick: handlerClick,
	        onCheck:handlerCheck
	    }
	};

function handlerClick(event,treeId,treeNode){
	var zTree = $.fn.zTree.getZTreeObj("prividgeEditTree");
	zTree.expandNode(treeNode);
}

function handlerCheck(e, treeId, treeNode){
	var zTree = $.fn.zTree.getZTreeObj("prividgeEditTree"),
	nodes = zTree.getCheckedNodes(true),
	v = "";
	for (var i=0, l=nodes.length; i<l; i++) {
		if(i == l-1){
			v += nodes[i].id;
		}else{
			v += nodes[i].id + ",";
		}
	}
	privResult = v;
}

jQuery(document).ready(function(){
	//主业务
	  layui.use(['element','table','layer','jquery','tree'],function(){
	  	var element = layui.element;
	  	var table = layui.table;
	  	var layer = layui.layer;
	  	var $ = layui.jquery;
	  	var treeNode = layui.tree;
	  	
	  	
	  	
	  	var tableOptions = {
	  			 id: 'tableRoleItems',
	  			skin: 'line'
	  			    ,elem: '#roleTable'
	  			    ,height: 'full-20'
	  			    ,url: '/role/list' //数据接口
	  			    ,even:true
	  			    ,page: true //开启分页
	  			    ,limit:10
	  			    ,loading:true
	  			    ,text:"当前暂无用户角色信息，请手动配置！"
	  			    ,toolbar:"#toolbarDemo"
	  			    ,defaultToolbar:['filter', 'print', 'exports']
	  			    ,cols: [[ //表头
	  			      {field: 'roleId', title: '编号',  sort: true, fixed: 'left',width:100,unresize:true}
	  			      ,{field: 'roleName', title: '角色名称',unresize:true}
	  			      ,{field: 'roleDesc', title: '角色描述',unresize:true}
	  			      ,{field: 'createTime', title: '创建时间',unresize:true}
	  			      ,{field: 'operate', title: '操作',toolbar: '#barDemo',fixed: 'right',unresize:true}
	  			    ]]
	  			  };
	  	
	  	var initTable = function (){
	  		table.init('roleInfo',tableOptions);
	  	}
	  	initTable();
	  	
	  	var reloadTable = function (item) {
	          table.reload("tableRoleItems",{
	          	page: {
	          	    curr: 1 //重新从第 1 页开始
	          	  }
	          });
	      };
	  	  
	  	//头工具栏事件
	  	  table.on('toolbar(roleInfo)', function(obj){
	  	   
	  	    switch(obj.event){
	  	      case 'insert':
	  	    	  layer.open({
	  				  title:"新增角色信息"
	  				  ,type: 1
	  			        ,offset: 'auto' //具体配置参考：http://www.layui.com/doc/modules/layer.html#offset
	  			        ,id: 'addRolePanel' //防止重复弹出
	  			        ,content: $('#updateRolePanelDisplay')
	  			        ,btn: ['确认', '取消']
	  			        ,btnAlign: 'c' //按钮居中
	  			        ,closeBtn:2
	  			        ,shade: 0.5 //不显示遮罩
	  			        ,shadeClose:true
	  			        ,anim:1
	  			        ,resize:false
	  			        ,success: function(layero, index){
	  			        	$("#roleNameInput").val("");
	  			        	$("#roleDescText").text("");
	  			            $("#updateRolePanelDisplay").show();
	  			        }
	  			        ,yes: function(){
	  			          layer.closeAll();
	  			        //向服务端发送删除指令
	  				      $.ajax({
	  				    	  url:"/role/insert",
	  				    	  type:"PUT",
	  				    	  data:{
	  				    		  "roleName":$("#roleNameInput").val(),
	  				    		  "roleDesc":$("#roleDescText").val()
	  				    	  },
	  				    	  dataType:"json",
	  				    	  success:function(result){
	  				    		  if(typeof(result) != "undefined" && result != null && result != ""){
	  				    			  if(result.code == 0){
	  				    				  reloadTable();
	  				    			      layer.msg(result.msg, {icon: 6}); 
	  				    			  }else{
	  				    				  layer.msg(result.msg, {icon: 5});
	  				    			  }
	  				    		  }
	  				    	  },error:function(){
	  				    		  layer.msg("新增角色请求失败", {icon: 5});
	  				    	  }
	  				      });
	  			        },
	  			        cancel:function(){
	  			        	$("#roleNameInput").val("");
	  			        	$("#roleDescText").text("");
	  			        	$("#roleDescText").val("");
	  			        	$("#updateRolePanelDisplay").hide();
	  			        	layer.closeAll();
	  			        }
	  			  });
	  	      break;
	  	      
	  	    };
	  	  });
	  	  
	  	  
	  	  //监听操作栏按钮事件
	  	  table.on('tool(roleInfo)',function(obj){
	  		 
	  		  var nowData = obj.data;
	  		  var layEvent = obj.event;
	  		  //修改信息
	  		  if(layEvent === 'edit'){
	  			  var index = layer.open({
	  				  title:"修改角色信息"
	  				  ,type: 1
	  			        ,offset: 'auto' //具体配置参考：http://www.layui.com/doc/modules/layer.html#offset
	  			        ,id: 'updateRolePanel' //防止重复弹出
	  			        ,content: $('#updateRolePanelDisplay')
	  			        ,btn: ['确认', '取消']
	  			        ,btnAlign: 'c' //按钮居中
	  			        ,closeBtn:2
	  			        ,shade: 0.5 //不显示遮罩
	  			        ,shadeClose:true
	  			        ,anim:1
	  			        ,resize:false
	  			        ,success: function(layero, index){
	  			        	$("#roleIdInput").val(nowData.roleId);
	  			        	$("#roleNameInput").val(nowData.roleName);
	  			        	$("#roleDescText").val(nowData.roleDesc);
	  			            $("#updateRolePanelDisplay").show();
	  			        }
	  			        ,yes: function(){
	  			          layer.closeAll();
	  			        //向服务端发送删除指令
	  				      $.ajax({
	  				    	  url:"/role/update",
	  				    	  type:"POST",
	  				    	  data:{
	  				    		  "roleId":nowData.roleId,
	  				    		  "roleName":$("#roleNameInput").val(),
	  				    		  "roleDesc":$("#roleDescText").val()
	  				    	  },
	  				    	  dataType:"json",
	  				    	  success:function(result){
	  				    		  if(typeof(result) != "undefined" && result != null && result != ""){
	  				    			  if(result.code == 0){
	  				    				  obj.update({
	  				    					  roleName: $("#roleNameInput").val()
	  				    				      ,roleDesc: $("#roleDescText").val()
	  				    				    });
	  				    			      layer.msg(result.msg, {icon: 6}); 
	  				    			  }else{
	  				    				  layer.msg(result.msg, {icon: 5});
	  				    			  }
	  				    		  }
	  				    	  },error:function(){
	  				    		  layer.msg("修改角色请求失败", {icon: 5});
	  				    	  }
	  				      });
	  			        },
	  			        cancel:function(){
	  			        	$("#roleIdInput").val("");
	  			        	$("#roleNameInput").val("");
	  			        	$("#roleDescText").text("");
	  			        	$("#roleDescText").val("");
	  			        	$("#updateRolePanelDisplay").hide();
	  			        	layer.closeAll();
	  			        }
	  			  });
	  		  //删除信息
	  		  }else if (layEvent === 'del'){
	  			  layer.confirm('真的删除角色['+ nowData.roleName +']吗？',{icon: 3, title:'提示'}, function(index){
	  			      
	  			      //向服务端发送删除指令
	  			      $.ajax({
	  			    	  url:"/role/del/"+nowData.roleId,
	  			    	  type:"DELETE",
	  			    	  dataType:"json",
	  			    	  success:function(result){
	  			    		  if(typeof(result) != "undefined" && result != null && result != ""){
	  			    			  layer.close(index);
	  			    			  if(result.code == 0){
	  			    				  obj.del(); //删除对应行（tr）的DOM结构，并更新缓存
	  			    				  
	  			    			      layer.msg(result.msg, {icon: 6}); 
	  			    			  }else{
	  			    				  layer.msg(result.msg, {icon: 5});
	  			    			  }
	  			    		  }
	  			    	  },error:function(){
	  			    		  layer.msg("删除角色请求失败", {icon: 5});
	  			    	  }
	  			      });
	  			  });
	  			  
	  			  
	  		  }else if (layEvent == "prividgeEdit"){
	  			  var index = layer.open({
	  				  title:"编辑权限信息"
	  				  ,type: 1
	  				  ,area: ['300px', '500px']
	  			        ,offset: 'auto' //具体配置参考：http://www.layui.com/doc/modules/layer.html#offset
	  			        ,id: 'prividgeEditPanel' //防止重复弹出
	  			        ,content: $('#prividgeEditTreeBox')
	  			        ,btn: ['确认', '取消']
	  			        ,btnAlign: 'c' //按钮居中
	  			        ,closeBtn:2
	  			        ,shade: 0.5 //不显示遮罩
	  			        ,shadeClose:true
	  			        ,anim:1
	  			        ,resize:false
	  			        ,success: function(layero, index){
	  			        	jQuery.ajax({
	  			        		url:"/role/privItem",
	  			        		type:"GET",
	  			        		data:{
	  			        			"roleId":nowData.roleId
	  			        		},
	  			        		dataType:"json",
	  			        		success:function(result){
	  			        			
	  			        			if(typeof(result) != "undefined" && result != null && result != ""){
		  				    			  if(result.code == 0){
		  				    				var zTree = $.fn.zTree.getZTreeObj("prividgeEditTree");
		  				    				for(var i = 0;i< result.data.length; i++){
		  				    					var nowCheckNodeId = result.data[i].pageId;
		  				    					var node = treeObj.getNodeByTId(nowCheckNodeId);
		  				    					node.checked = true;
		  				    					privResult += nowCheckNodeId + ",";
		  				    				}
		  				    			  }
		  				    		  }
	  			        			
	  			        			
	  			        			
	  			        		},error:function(){
	  			        			layer.alert("获取权限信息失败", {icon: 5});
	  			        		}
	  			        	});
	  			        }
	  			        ,yes: function(){
	  			          layer.closeAll();
	  			        //向服务端发送删除指令
	  				      $.ajax({
	  				    	  url:"/role/privUpdate",
	  				    	  type:"POST",
	  				    	  data:{
	  				    		  "roleId":nowData.roleId,
	  				    		  "privResult":privResult
	  				    	  },
	  				    	  dataType:"json",
	  				    	  success:function(result){
	  				    		  if(typeof(result) != "undefined" && result != null && result != ""){
	  				    			  if(result.code == 0){
	  				    			      layer.msg(result.msg, {icon: 6}); 
	  				    			  }else{
	  				    				  layer.msg(result.msg, {icon: 5});
	  				    			  }
	  				    		  }
	  				    	  },error:function(){
	  				    		  layer.msg("修改权限信息请求失败", {icon: 5});
	  				    	  }
	  				      });
	  			        },
	  			        cancel:function(){
	  			        	layer.closeAll();
	  			        }
	  			  });
	  		  }
	  	  });//table 操作栏结束标记
	  });//layui结束标记
	  
	  jQuery.ajax({
	  		url:"/rolePriv/menu",
	  		type:"GET",
	  		dataType:"json",
	  		success:function(result){
	  			jQuery.fn.zTree.init($("#prividgeEditTree"),setting,result);
	  		},error:function(){
	  			layer.alert("获取权限信息失败", {icon: 5});
	  		}
	  	});
});
 
